<?php
/**
 * Class User represents the database table 'users'.
 *
 */
class User {
	
	public $id;
	
	public $matrikkel;
	
	public $eesnimi;
	
	public $perenimi;
	
	public $aktiivne;
	
	public $oppejoud;
	
	public $ruhm;
	
	
	public function __construct( $id = NULL, $matrikkel = NULL, $oppejoud = NULL, $aktiivne = NULL, $ruhm = NULL, $eesnimi = NULL, $perenimi = NULL ) {
		$this->id = $id;
		$this->matrikkel = $matrikkel;
		$this->oppejoud = $oppejoud;
		$this->aktiivne = $aktiivne;
		$this->ruhm = $ruhm;
		$this->eesnimi=$eesnimi;
		$this->perenimi=$perenimi;
	}
	
	public static function insert( $sql, $matrikkel, $hash, $ruhm, $eesnimi, $perenimi ) {
	//	global $sql;
		
		$query = "SELECT * FROM kasutajad k WHERE 
			k.matrikkel='".$matrikkel."' LIMIT 1";
		$sql->query($query);
		if(count($sql->selectQuery($query))>0){
			return false;
		}
		
		
		$active = true;
		$query = "INSERT INTO kasutajad (matrikkel, parool, aktiivne, ruhm, eesnimi, perenimi) 
			VALUES ('$matrikkel', '$hash', '$active', '$ruhm', '$eesnimi', '$perenimi')";
		$sql->query($query);
		
		
		if( $sql->affectedRows() == 1 ) {
			return true;
		}
		
		return false;
	}
	
	public static function logIn( &$sql, $matrikkel, $hash ) {
	//	global $sql;
		$query = "SELECT k.idkasutaja, k.matrikkel, k.oppejoud, k.ruhm, k.perenimi, k.eesnimi, k.aktiivne 
			FROM kasutajad k 
			WHERE k.matrikkel = '".$matrikkel."' AND k.parool = '".$hash."' LIMIT 1";
		$data = $sql->selectQuery($query);
		
		if( !empty($data) ) {
			$user = new User( $data[0]['idkasutaja'], $data[0]['matrikkel'], $data[0]['oppejoud'], $data[0]['aktiivne'], $data[0]['ruhm'], $data[0]['eesnimi'], $data[0]['perenimi'] );
			return $user;
		}
		
		return false;
	}
	
	public static function loadById( &$sql, $id ) {
	//	global $sql;
		$query = "SELECT k.idkasutaja, k.parool, k.matrikkel, k.oppejoud, k.ruhm, k.perenimi, k.eesnimi, k.aktiivne 
			FROM kasutajad k 
			WHERE k.idkasutaja = ".(int)$id." 
			LIMIT 1";
		$data = $sql->selectQuery($query);
		
		if( !empty($data) ) {
			$user = new User( $data[0]['idkasutaja'], $data[0]['matrikkel'], $data[0]['oppejoud'], $data[0]['aktiivne'], $data[0]['ruhm'], $data[0]['eesnimi'], $data[0]['perenimi'] );
			return $user;
		}
		return false;
	}
	
	
	
	
	public static function changePassword( &$sql, $id, $hash ) {
	//	global $sql;
		$query = "UPDATE kasutajad k SET k.parool = '".$hash."'
		WHERE k.idkasutaja = '".$id."' LIMIT 1";
		$sql->query($query);
		
		if( !($sql->affectedRows() == 1) ) {
			//check if maybe the data that is being set is already set in the db 
			$query = "SELECT * FROM kasutajad k WHERE k.idkasutaja = '".$id."' AND k.parool = '".$hash."'";
			$sql->query($query);
			if(count($sql->selectQuery($query))==1){
					return true;
					} else return false;
		} else return true;
	}
	
	//deactivates account
	public static function deActivate( $sql, $idkasutaja) {
		//	global $sql;

		
		$query = "UPDATE kasutajad k SET k.aktiivne = '0' 
			 WHERE k.idkasutaja = '".$idkasutaja."' LIMIT 1";
		$sql->query($query);
		
		if( $sql->affectedRows() == 1 ) {
			return true;
		}
		return false;
	}
	
	//activates account
	public static function activate( $sql, $idkasutaja) {
		$query = "UPDATE kasutajad k SET k.aktiivne = '1' 
			WHERE k.idkasutaja = '".$idkasutaja."'";
		$sql->query($query);
		if( $sql->affectedRows() == 1 ) {
			return true;
		}	
		return false;
	}

	
	/**
	 * Gets all users from the database.
	 * @return array
	 */
	public static function loadAll($sql) {
		$query = "SELECT * 
			FROM kasutajad
			ORDER BY idkasutaja DESC";
		
		return $sql->selectQuery( $query );
	
	}
	
	/**
	 * Change users data
	 * @return boolean
	 */
	public static function editUserData($sql, $idkasutaja, $matrikkel, $ruhm, $eesnimi, $perenimi) {
				
		$query = "UPDATE kasutajad k SET k.matrikkel = '".$matrikkel."',
			k.ruhm ='".$ruhm."', k.eesnimi = '".$eesnimi."', k.perenimi='".$perenimi."' 
			WHERE k.idkasutaja = '".$idkasutaja."' LIMIT 1";
		$sql->query( $query );
		

		if( !($sql->affectedRows() == 1) ) {
			//check if maybe the data that is being set is already set in the db 
			$query = "SELECT * FROM kasutajad k WHERE k.matrikkel = '".$matrikkel."' AND
				k.ruhm ='".$ruhm."' AND k.eesnimi = '".$eesnimi."' AND k.perenimi='".$perenimi."' 
				AND k.idkasutaja = '".$idkasutaja."' LIMIT 1";
			$sql->query($query);
			if(count($sql->selectQuery($query))==1){
					return true;
					} else return false;
		} else return true;
	
	}
	
	/**
	 * 
	 * Enter description here ...
	 * @param unknown_type $sql
	 * @param int $idkasutaja
	 * @return boolean - was the account deleted
	 */
	public static function deleteUser($sql, $idkasutaja) {
				
		$query = "DELETE FROM kasutajad WHERE idkasutaja =".$idkasutaja." LIMIT 1";
		$result = $sql->query( $query );
		if( $sql->affectedRows() == 1 ) {
			return true;
		}	
		return false;
		
	
	}
	
}
?>
